Enterprise Resource Planning (ERP) refers to the field of integrating most of the data and processes of an organization into a unified system. A typical ERP system uses multiple components of computer software and hardware to achieve the integration. Most ERP systems use a unified database to store data for the various system components. Prior to using an ERP system, most organizations used separate applications for accounting, human resources, and other business functions. ERP systems typically attempt to cover all of the basic functions of an organization, regardless of the organization's business or charter. For example, ERP systems may cover manufacturing, warehousing, logistics, information technology, accounting, human resources, marketing, payroll, and strategic management. Business, nonprofit organizations, nongovernmental organizations, governments, and other organizations utilize ERP systems.
The unified database of an ERP system contains various database tables for storing different types of data for an organization. For example, one database table may store customer information (e.g., customer name and address), and another table may store inventory information (e.g., product name and back-order status). Each database table contains records (e.g., rows) that have various fields (e.g., columns). The data of each record is stored as field values in the fields. For example, a customer database table may have a customer name field and one record may contain “Acme” as its field value. A database table may have the attribute that its records are each associated with a field or a combination of fields whose values uniquely identify the record. For example, a customer database table may use the combination of customer name and zip code fields to uniquely identify each record. In such a case, the database system would allow multiple records with the same customer name to be in the customer database table as long as their zip codes are different. Thus, the database system would allow the records for “Acme/98199” and “Acme/92335” to be stored in the customer table but not two records for “Acme/98199.” The combination of fields that uniquely identifies a record is referred to as the “key” of the database table and the fields of the combination are referred to as “key fields.”
Typical ERP systems provide a two-tier (or client/server) architecture in which a client-side component that implements the functionality of the ERP system interfaces with a database server that provides access to the unified database. The client-side component may provide user interface, run-time, and design-time functionality of the ERP system. When the client-side component retrieves a set of records from the database server, the records can be shared between software that implements the different functionalities of the ERP system. If a three-tier architecture were to be used, then the functionality of the client-side component might be distributed between a UI client and an application server, which interfaces with the database server. In such a case, the records of the database cannot be as easily shared between the UI client and the application server because both the UI client and the application server may need to access the same record at the same time.
With such a three-tier architecture, the application server provides a run-time environment that interfaces with the database server and executes the applications of the ERP system. The UI client interfaces with the application server and controls the user interface. Since both the UI client and the application server need access to the records of the database, both require the ability to modify the records, change position within a table, and otherwise manipulate the records independently of the other. Since each can change the records of the database independently of the other, the UI client's and the application server's view of a record may be inconsistent. For example, if the UI client changes the value of a field of a record, the application server's view of that record may be of the unchanged value.